/**
 * Copyright(c) 2014 Xunton Solutions
 *
 * History:
 *   15-5-27 下午6:05 Created by dwzhang
 */
package com.jade.modules.media;

import java.util.Collection;

import javax.ejb.TransactionAttribute;

import com.jade.framework.base.criterion.Criteria;
import com.jade.framework.base.util.PagingList;
import org.springframework.transaction.annotation.Transactional;


/***
 *
 * 媒体资料项的管理接口。
 *
 * @author <a href="mailto:dwzhang@xunton.com">dwzhang</a> 
 * @version 1.0 15-5-27 下午6:05
 */
public interface MediaItemManager
{
    /**
     * 列出一个实体对象所有的媒体资料项。
     *
     * @param itemId 媒体资料项标识。
     * @return 媒体资料项列表
     */
    public CMediaItem getItem(long itemId);

    public CMediaItem getItemByUri(String uri);

    /**
     * 为一个实体对象（例如产品、客户组等）添加一组媒体资料项。
     *
     * @param items 待添加的媒体资料项。
     * @throws MediaException 操作异常
     */
    public void addItem(Collection<CMediaItem> items)
            throws MediaException;

    public void addItem(CMediaItem... items)
            throws MediaException;

    /**
     * 删除一个/一组媒体资料项。
     *
     * @param ids 待删除的媒体资料项。
     * @throws MediaException 操作异常
     */
    public void removeItem(long... ids)
            throws MediaException;

    /**
     * 查询媒体资料项。
     *
     * @param criteria 查询条件
     * @return 媒体资料项列表。
     */
    public PagingList<CMediaItem> query(Criteria criteria);
}
